home *** CD-ROM | disk | FTP | other *** search
/ Shareware Grab Bag / Shareware Grab Bag.iso / 007 / baswin.arc / SCROLL.SUB < prev    next >
Text File  |  1986-11-10  |  2KB  |  52 lines

  1.  
  2.               SUB SCROLL(ULR%,ULC%,LRR%,LRC%,LINES%,DIR%,NEWMSG$) STATIC
  3.  
  4.               'Adjust for 0 reference of parameters for BIOS call
  5.               ULR%=ULR%-1
  6.               ULC%=ULC%-1
  7.               LRR%=LRR%-1
  8.               LRC%=LRC%-1
  9.  
  10.               DIM INARRY%(7),OUTARRY%(7)
  11.  
  12.               'Prepare INARRY% variables with data for SCROLL BIOS CALL
  13.  
  14.               'Determine if SCROLL UP (6) or SCROLL DOWN (7) Service
  15.  
  16.               IF DIR%=1 THEN INARRY%(0)=1536 ELSE IF DIR%= -1 THEN INARRY%(0)=1792 ELSE EXIT SUB
  17.               'Service 6 = 6 shifted 8 = 1536, Service 7 = 7 shifted 4 = 1792
  18.               'Service goes in AH register
  19.  
  20.               INARRY%(0)=INARRY%(0)+LINES%
  21.               'Lines goes in AL register
  22.  
  23.               INARRY%(1)=SCREEN(ULR%,ULC%,1)*256
  24.               'BH = Color Attribute of window
  25.  
  26.               INARRY%(2)=(ULR%*256)+ULC%
  27.               'CH=ULR, CL=ULC
  28.  
  29.               INARRY%(3)=(LRR%*256)+LRC%
  30.               'DH=LRR, DL=LRC
  31.  
  32.               INARRY%(4)=0:INARRY%(5)=0:INARRY%(6)=0:INARRY%(7)=0
  33.               'All other registers empty
  34.  
  35.               'Perform Scroll
  36.               INTRRPT%=16:'Video BIOS Interrupt
  37.  
  38.               CALL INT86(INTRRPT%,VARPTR(INARRY%(0)),VARPTR(OUTARRY%(0)))
  39.  
  40.               'Determine if NEWMSG$ goes on top or bottom line
  41.  
  42.               IF DIR%=1 THEN ROW%=LRR%+1 ELSE IF DIR%=-1 THEN ROW%=ULR%+1
  43.               COL%=ULC%+1
  44.               ATTR%=SCREEN(ULR%,ULC%,1)
  45.  
  46.               CALL FASTPRT(NEWMSG$,ROW%,COL%,ATTR%)
  47.  
  48.               END SUB
  49.  
  50.  
  51.  
  52.